As more and more information is generated in this age of computer technology, the need for more storage space has increased. Further, as the amount of information increases more bandwidth is needed to communicate the information between computer systems. One way of addressing this problem is to use various techniques of reducing the amount of data that is stored or transmitted while preserving as much as possible the amount of information associated with that data. Various techniques, such as defragmentation and compression, have been developed. Defragmentation involves reorganizing files stored on a disk by storing the files in a contiguous order to reduce unusable space. Compression involves locating repeatable patterns of binary 0s and 1s in a part of a file. After that part of the file is compressed, the next part of the file is separately analyzed to locate repeatable patterns of binary 0s and 1s in that next part of the file.